package cn.fengkuok.core.utils;

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import cn.fengkuok.core.shared.Constants;

public class Utils {

	/**
	 * 对SQL特殊字符串进行转换
	 * 
	 * @param input
	 * @return 转换后的字符串
	 */
	public static String sqlEncoding(String input) {
		if (input == null) {
			return "";
		}
		return input.replaceAll("'", "''");
	}

	/**
	 * 根据行号分别返回奇偶行的css class信息
	 * 
	 * @param i
	 *            行号
	 * @return css class信息
	 */
	public static String getCssOfRow(int i) {
		if (i % 2 == 1) {
			return "class='row-1'";
		}

		return "class='row-2'";
	}

	/**
	 * 检查字符串是否为空
	 * 
	 * @param str
	 *            被检查的字符串
	 * @return true:null或者空白;false:非空
	 */
	public static boolean isNullOrBlank(String str) {
		if (str == null || Constants.BLANK.equals(str.trim())) {
			return true;
		}
		return false;
	}

	public static boolean isNullOrBlank(String[] str) {
		if (str == null || str.equals(Constants.BLANK)) {
			return true;
		}
		return false;
	}

	/**
	 * 检查 E_mail 地址是否正确
	 * 
	 * @param str
	 * @return 正确 返回true 不正确返回false
	 */

	public static boolean mailCheck(String str) {

		String check = "^([a-z0-9A-Z]+[-|._]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?.)+[a-zA-Z]{2,}$";
		Pattern regex = Pattern.compile(check);
		Matcher matcher = regex.matcher(str.trim());
		boolean isMatched = matcher.matches();
		if (isMatched) {
			return true;
		} else {
			return false;
		}
	}

	/**
	 * 检查输入字符串是否以字母开头，并仅含有字母、数字和下滑线
	 * 
	 * @param str
	 *            被检测字符串
	 * @return true:合法,false:不合法
	 */
	public static boolean checkId(String str) {

		String regex = "[a-zA-Z]+[_a-z0-9A-Z]*";
		return str.matches(regex);
	}

	/**
	 * 检查输入字符串是否可转换为数值
	 * 
	 * @param str
	 *            被检测字符串
	 * @return true:可,false:不可
	 */
	public static boolean isNumeric(String str) {

		if (str == null || str.equals("")) {
			return false;
		}
		return str.matches("[\\d]+");
	}

	/**
	 * 将指定的字符串形式的数组转换为整型数组
	 * 
	 * 
	 * @param value
	 *            指定的字符串形式的数组
	 * 
	 * @return 整型数组
	 */
	public static int[] converTointArray(String value) {
		String[] arr = value.split("\\,");
		int[] intArr = new int[arr.length];

		for (int i = 0; i < intArr.length; i++) {
			Integer it = new Integer(arr[i]);
			intArr[i] = it.intValue();
		}

		return intArr;
	}

	/**
	 * 将数据库的回车符转为HTML中的换行
	 * 
	 * @param str
	 * 
	 * @return 转换后的数据
	 */
	public static String convertToHtmlEnter(String str) {

		if (str == null) {
			return "";
		}

		return str.replaceAll("\n", "<br>");

	}

	/**
	 * 长度超过限度后。将多于信息删除。
	 */
	public static String stringLengthIntercept(String str) {

		if (str == null) {
			return "";
		}

		if (str.length() >= 2000) {
			return str.substring(0, 2000);
		}

		return str;
	}

	/**
	 * 此方法用于将Util date转化为sql date
	 */
	public static java.sql.Date sqlDate(Date date) {
		java.sql.Date sqlDate = new java.sql.Date(date.getTime());
		return sqlDate;
	}

	/**
	 * 获取时间戳
	 */
	public static String getTimeStamp() {
		Timestamp time = new Timestamp(new java.util.Date().getTime());
		return DateUtils.convertDateToString(time,
				DateUtils.DATE_FMT_YYYYMMDDHHMMSSSSS_WITHOUT_SEP);
	}

	/**
	 * 此方法用于将UtilDate转化为oracle格式date
	 * 
	 * @param date
	 *            Util.date
	 * @return
	 */
	public static String oracleDate(Date date) {
		StringBuffer toDate = new StringBuffer();
		toDate.append(" to_date('" + sqlDate(date)
				+ "','yyyy-mm-dd hh24:mi:ss') ");
		return toDate.toString();
	}

	public static String getSuffix(String fileName) {
		return fileName.substring(fileName.lastIndexOf(".") + 1);
	}

	/**
	 * 将日期格式化成pattern指定的格式并以字符串返回
	 * 
	 * @param input
	 * @param pattern
	 * @return String
	 */
	public static String parseDate(Date input, String pattern) {
		if (input == null) {
			return null;
		}
		DateFormat dateTypeFormat = new SimpleDateFormat(pattern);
		try {
			return dateTypeFormat.format(input);
		} catch (Exception ex) {
			return null;
		}
	}

	/**
	 * 获取6位随机数字
	 * 
	 * @return
	 */
	public static int Random() {
		int b = 0;
		while(b < 100000){
			b = (int) (Math.random() * 1000000);// 产生0-1000000的整数随机数
		}// System.out.println(b); //测试结果
		return b;
	}
	
}
